﻿using System;
using System.Collections.Generic;

namespace DbManager.DataRequest
{
    public class DataRequestCenaProjivania:IDataRequest
    {
        private decimal? _price;
        private int? _foreignKeyKomnata;
        private int? _foreignKeyUslovia;
        private int? _foreignKeyBazaOtdiha;

        public void SetRequestParameters(Dictionary<string, string> parametersDictionary)
        {
            if (parametersDictionary.ContainsKey("price"))
            {
                _price = decimal.Parse(parametersDictionary["price"]);
            }
            if (parametersDictionary.ContainsKey("foreignKey1") &&
                parametersDictionary.ContainsKey("foreignKey2") &&
                parametersDictionary.ContainsKey("foreignKey3"))
            {
                _foreignKeyKomnata = Int32.Parse(parametersDictionary["foreignKey1"]);
                _foreignKeyUslovia = Int32.Parse(parametersDictionary["foreignKey2"]);
                _foreignKeyBazaOtdiha = Int32.Parse(parametersDictionary["foreignKey3"]);
            }
        }

        public string GetSelectQuery()
        {
            return "SELECT [Цена проживания].Идентификатор, [База отдыха].Название AS [База отдыха], Условия.Название AS Условия, Комната.[Класс комнаты], Комната.[Количество мест] AS Места, [Цена проживания].Цена " +
                "FROM ((([Цена проживания] INNER JOIN Комната ON [Цена проживания].[Идентификатор комната] = Комната.Идентификатор) INNER JOIN Условия ON [Цена проживания].[Идентификатор условия] = Условия.Идентификатор) INNER JOIN [База отдыха] ON [Цена проживания].[Идентификатор база отдыха] = [База отдыха].Идентификатор) "+
                "ORDER BY [База отдыха].Название";
        }

        public string GetSelectQueryById()
        {
            throw new NotImplementedException();
        }

        public string GetInsertQuery()
        {
            if (_price == null || _foreignKeyKomnata == null || _foreignKeyUslovia == null || _foreignKeyBazaOtdiha == null)
            {
                return string.Empty;
            }
            return "INSERT INTO [Цена проживания] ([Идентификатор комната], [Идентификатор условия], [Идентификатор база отдыха], [Цена]) VALUES ("+_foreignKeyKomnata+", "+_foreignKeyUslovia+", "+_foreignKeyBazaOtdiha+", '"+_price+"')";
        }

        public string GetUpdateQuery(int id)
        {
            if (_price == null || id == 0)
            {
                return string.Empty;
            }
            return "UPDATE [Цена проживания] SET [Цена]='" + _price + "' WHERE [Идентификатор]=" + id;
        }

        public string GetDeleteQuery(int id)
        {
            if (id == 0)
            {
                return string.Empty;
            }
            return "DELETE FROM [Цена проживания] WHERE [Идентификатор]=" + id;
        }
    }
}
